/***************************************************************************
 * 文件名:IConceptsDao.java<br>
 * 版本: <br>
 * 描述: <br>
 * 版权所有: <br>
 * //////////////////////////////////////////////////////// <br>
 * 创建者: robo<br>
 * 创建日期: 2010-11-15 <br>
 * 修改者: <br>
 * 修改日期: <br>
 * 修改说明: <br>
 **************************************************************************/
package com.sunwayhorizo.health.ets.base.service.dao;

import java.util.List;

import javax.ejb.Local;

import com.sunwayhorizo.health.business.dto.DictionaryDTO;
import com.sunwayhorizo.health.ets.base.common.IBaseDao;
import com.sunwayhorizo.health.ets.base.persistent.EtConcepts;

@Local
public interface IConceptsDao extends IBaseDao{
    
	public List<EtConcepts> findConcepts(String[]as);
	
	/**
	 * 得到CD类型需要的值
	 * @param codingschemeChName   字典中文名称
	 * @param codingschemeEnName   字典英文名称
	 * @param versionName          版本名称
	 * @return
	 * @throws Exception
	 */
	public List<DictionaryDTO> getConceptsObjects(String codingschemeChName,String codingschemeEnName,String versionName) ;
	
	/**
	 * 得到CD类型需要的值
	 * @param codingschemeEnName    字典英文名称
	 * @return
	 * @throws Exception
	 */
	public List<DictionaryDTO> getConceptsObjects(String codingschemeEnName) ;
	
	public List<DictionaryDTO> getConceptsObjects(String codingschemeEnName, String versionName);
	
	public String getSimpleConceptsObjects(String codingschemeEnName, String versionName);
	/**
	 * 得到CD类型对象
	 * @param codingschemeEnName     字典英文名称 
	 * @param conceptCode            术语CODE
	 * @return
	 */
	public DictionaryDTO getConceptsObject(String codingschemeEnName,
			String conceptCode);
	
	public List<DictionaryDTO> getBulkConcepts(String conceptCode[], String codingschemeEnName, Boolean boolean1, Boolean boolean2) ;
	
	public List<DictionaryDTO> getBulkConcepts(String conceptCode[], String codingschemeEnName, Boolean boolean1);
	
	public List<DictionaryDTO> getBulkConcepts(String conceptCode[], String codingschemeEnName, String codingschemeChName, Boolean boolean1, Boolean boolean2) ;
	
	/**
	 * 根据术语字典英文名、术语Code查询所有的地区
	 * @param codingSchemeEnName
	 * @param code
	 * @return
	 */
	public List<DictionaryDTO> getPlace(String codingSchemeEnName,String  code );

	/**
	 * 得到CD类型对象
	 * @param conceptCode     术语CODE
	 * @param conceptName     术语名称 
	 * @return
	 */
	public DictionaryDTO getConceptsDTO(String conceptCode, String conceptName);

	
	/**
	 * 得到CD类型对象
	 * @param codingschemeEnName     字典英文名称 
	 * @param conceptName            术语名称
	 * @return
	 */
	public DictionaryDTO getConceptsDTOByCodeAndEnname(
			String codingSchemesEnName, String conceptName);
	
	/**
	 * 根据术语字典英文名、术语code查询
	 * @param codingSchemeEnName
	 * @param code
	 * @return
	 */
	public List<DictionaryDTO> getBlobOrClob(String codingschemeChName,String codingschemeEnName,String versionName );
	
	
	public DictionaryDTO getConceptsDTOBlobOrClob(String codingschemeEnName,
			String conceptCode);

	List<DictionaryDTO> findDictionaryDtosByCSNameAndVersionNameAndConceptCodeAndModelCode(String codingschemeEnName,String versionName,String conceptCode,String modelCode);
	
	List<DictionaryDTO> findDictionaryDtosByConceptClass(String conceptClass);
	
	List<DictionaryDTO> findDictionaryDtosListByCond(String codingSchemesEnName,String versionName,String conceptCode,String conceptClass);
	
	/**
     * 根据字典英文名称（版本名称、术语编码、术语分类可选）进行查询术语项，按照术语分类进行叶子节点的查询
     * @param codingschemeEnName            字典英文名称       
     * @param versionName                   版本名称
     * @param conceptCode                   术语编码
     * @param conceptClass                  术语分类
     * @return                              返回的术语项     
     */
	List<DictionaryDTO> findLeafDirAll(String codingschemeEnName,String versionName,String conceptCode,String conceptClass);
	
	/**
     * 根据字典英文名称（版本名称、术语编码、术语分类可选）进行查询术语项的编码，按照术语分类进行叶子节点编码的查询
     * @param codingschemeEnName            字典英文名称       
     * @param versionName                   版本名称
     * @param conceptCode                   术语编码
     * @param conceptClass                  术语分类
     * @return                              返回的术语项的编码    
     */
    List<String> findLeafDirCodeAll(String codingschemeEnName,String versionName,String conceptCode,String conceptClass);
}
